package com.facemox.util;

import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.springframework.util.ResourceUtils;

/**
 * @module 邮件发送
 * @author Face X
 */
public class JavaMail {

    public static void main(String[] args) throws Exception {
        
        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.126.com");
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        
        // 0、使用JavaMail发送邮件的5个步骤
        // 1、创建session
        Session session = Session.getInstance(prop);
        // 开启Session的debug模式，这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);
        // 2、通过session得到transport对象
        Transport ts = session.getTransport();
        // 3、使用邮箱的用户名和密码连上邮件服务器，发送邮件时，发件人需要提交邮箱的用户名和密码给smtp服务器，用户名和密码都通过验证之后才能够正常发送邮件给收件人。
        ts.connect("smtp.126.com", "songjianghu", "***************");
        // 4、创建邮件
        Message message = createSimpleMail(session);
        // 5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }
    
    /**
     * 
     * @module 创建邮件
     * @throws Exception
     */
    public static MimeMessage createSimpleMail(Session session) throws Exception {
        
        // 1、创建邮件对象
        MimeMessage message = new MimeMessage(session);
        
        // 2、指明邮件的发件人
        message.setFrom(new InternetAddress("songjianghu@126.com"));
       
        // 3、指明邮件的收件人，现在发件人和收件人是一样的，那就是自己给自己发
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("***************@qq.com"));
        
        // 4、邮件的标题
        message.setSubject("邮件标题");
        
        // 5、邮件的文本内容
        message.setContent("系统检测到www.facemox.com已经失去联系，请确认后启动修复程序！！！", "text/html;charset=UTF-8");
        
        MimeMultipart multipart = new MimeMultipart();
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("系统通知邮件","text/html;charset=UTF-8");
        
        // 准备图片数据
        MimeBodyPart img = new MimeBodyPart();
        File file = ResourceUtils.getFile("classpath:static/img/project_logo.jpg");
        
        DataHandler dh = new DataHandler(new FileDataSource(file));
        img.setDataHandler(dh);
        img.setContentID("project_logo.jpg");
        
        // 描述关系
        MimeMultipart mimeMultipart = new MimeMultipart();
        mimeMultipart.addBodyPart(text);
        mimeMultipart.addBodyPart(img);
        mimeMultipart.setSubType("related");
        
        message.setContent(mimeMultipart);
        message.saveChanges();
        
        
        // 6、返回创建好的邮件对象
        return message;
    }
}
